package com.testing.class1;

import com.testing.driverSelf.GoogleDriver;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.ie.InternetExplorerOptions;

/**
 * @author li
 */
public class SeleniumDemo {
    public static void main(String[] args) throws InterruptedException {
        // 不同浏览器做兼容性测试

        GoogleDriver googleDriver = new GoogleDriver("D:\\Derom\\settings\\chromedriver.exe");
        WebDriver driver = googleDriver.getDriver();
        /*// 启动chromedriver
        System.setProperty("webdriver.chrome.driver", "D:\\Derom\\settings\\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--user-data-dir=D:\\Derom\\chromeData");
        // 向上转型
        WebDriver driver = new ChromeDriver(options);*/

        /*// 火狐 如果安装火狐没有在默认路径下，需要用到webdriver.firefox.bin指定一下安装路径
        System.setProperty("webdriver.gecko.diver", "Driver\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();*/

        /*// edge driver
        System.setProperty("webdriver.edge.driver", "DriverExe\\msedgedriver.exe")
        WebDriver driver = new EdgeDriver();*/

        /*// Iedriver
        System.setProperty("webdriver.ie.driver", "Driver\\IEDriverServer.exe");
        //  通过添加配置，忽略对于缩放比例的校验
        InternetExplorerOptions options = new InternetExplorerOptions();
        options.ignoreZoomSettings();
        // 在实例化driver的时候将options带上
        WebDriver driver = new InternetExplorerDriver(options);*/

        // 访问网页
        driver.get("https://www.baidu.com");
        // 等待3秒
        Thread.sleep(3000);
        // 与get方法等效
        driver.navigate().to("https://music.163.com");
        Thread.sleep(3000);
        // 返回上一个页面
        driver.navigate().back();
        // 最大化浏览器窗口
        driver.manage().window().maximize();
        // 调整浏览器的窗口位置，可以用qq截图测量屏幕像素坐标
        Point point = new Point(340, 10);
        driver.manage().window().setPosition(point);
        driver.manage().window().setSize(new Dimension(1580, 1000));

        // 测试脚本
        // 1、输入框输入roy
        WebElement searchInput = driver.findElement(By.cssSelector("#kw"));
        searchInput.sendKeys("Kevin Durant");
        // 2. 提交搜索
        driver.findElement(By.cssSelector("#su")).click();
        // 3. 清空搜索框
        Thread.sleep(3000);
        searchInput.clear(); // 同一个页面下可以直接用，否则要重新定位元素
        searchInput.sendKeys("特斯汀");
        // 如果输入框在form表单中，可以用submit进行提交
        searchInput.submit();
        Thread.sleep(1000);
        // 4. 断言验证
        // 用title断言
        if ("特斯汀_百度搜索".equals(driver.getTitle())) {
            System.out.println("测试成功");
        }
        // 获取页面html文档是否包含特斯汀
        String pageSource = driver.getPageSource();
        System.out.println("底层源码是" + pageSource);
        if (pageSource.contains("特斯汀")) {
            System.out.println("断言页面文档成功");
        }
        // 获取元素信息(常用)
        WebElement firstRes = driver.findElement(By.xpath("//div[@id='content_left']/div[1]/div/div/h3/a"));
        String text = firstRes.getText();
        System.out.println("文本内容是" + text);
        System.out.println("href链接是" + firstRes.getAttribute("href"));


        Thread.sleep(3000);
        // 关闭浏览器并且杀死webdriver进程 crm指令：taskkill /f /im chromedriver.exe
        driver.quit();
        // 关闭当前浏览器窗口，但是只有一个窗口，就会把浏览器关了，但是不会关掉ChromeDriver
//        driver.close();
    }
}
